A number of different systems produce large volumes of data that can be more easily understood and managed by visual analysis. Analysis of this data can typically be handled in a number of different ways. One example of a system that produces such data is software known as a profiler. A software profiler uses a form of dynamic program analysis that measures, for example, the memory or time complexity of a software product, the usage of particular instructions, the frequency and duration of function calls, etc. This aids the designer of the software product in the optimization of the software product.
There are a number of different types of items in the analyzed software that can be monitored including, for example, CPU usage, memory usage, GPU usage, function calls, etc. Generally this information can be measured in two ways: by instrumentation or by sampling. Both methods are possible for measuring software programs known as user-scriptable engines. Examples of user-scriptable engines include, but are not limited to, ADOBE FLASH PLAYER™ from Adobe Systems, Inc. of San Jose, Calif. as well as web browsers (such as Chrome™ from Google, Inc. of Mountain View, Calif.) operating hypertext markup language 5 (HTML 5).
Instrumented data is data that is captured via additional program code, or hooks that an external process can attach to, embedded within the functions. In the case of the ADOBE FLASH PLAYER™, these functions are written as C++ native function calls within the user-scriptable engine, for example, and could have additional lines of code added to them which act to record data when the functions are executed. Lightweight instrumentation can be used in such instances, to reduce the overhead that can be attributed to the instrumentation itself. Instrumented data can also cover the case where a function contains hooks, allowing an external process to attach to it and execute code when certain events happen. This instrumented data can be valuable, but it is typically implemented by a developer of a user-scriptable engine, and as such choice of which functions to instrument cannot be easily modified. Sampled data, on the other hand, is generated dynamically at runtime by taking periodic snapshots of the current execution state of the script written by the user. In the case of the ADOBE FLASH PLAYER™, the sampled functions are written in ActionScript.
To the extent that profilers may utilize both instrumented and sampled data, they are treated as separate data streams and not combined in any meaningful way. For example, they may allow a user to switch views between instrumented data views and sampled data views, but not combine such views to be displayed simultaneously in a manner that would allow the user to make meaningful comparisons between the two.